import { getUserInfo, getUserInfoById, login } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
// 保存用户相关信息的模块
export default {
  namespaced: true,
  state: {
    token: getToken(), // 声明变量 保存token
    userInfo: {}// 声明变量 保存用户信息
  },
  mutations: {
    // 保存token
    SET_TOKEN(state, token) {
      state.token = token
      setToken(token)
      // 保存登录的时间戳
      localStorage.setItem('loginTime', Date.now())
    },
    // 保存用户信息
    SET_USERINFO(state, userInfo) {
      state.userInfo = userInfo
    },
    // 移除token
    removeToken(state) {
      state.token = ''
      // 清除缓存
      removeToken()
    },
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    // actions中的函数默认能够接收到一个参数的
    // 这个参数就相当于 实例化的store对象
    async login(store, loginForm) {
      const res = await login(loginForm)
      // console.log('校验通过', res)
      // 调用vuex中mutations函数 从而保存token
      store.commit('SET_TOKEN', res)
    },
    async getUserInfo(store) {
      // 获取用户名
      const res = await getUserInfo()
      // 获取头像
      const result = await getUserInfoById(res.userId)
      // console.log(35, result)
      // 保存信息
      store.commit('SET_USERINFO', { ...res, ...result })
    },
    // 退出登录
    logout(store) {
      store.commit('removeToken')
      store.commit('removeUserInfo')
    }

  }
}

